<?php
/**
 * Класс записывает значения в файл ini не нарушая его форматирования, коментарии.
 * @author nrnwest@gmail.com
 *
 */
class Arm_Config_Write_Ini
{
    /**
     * Путь к файлу с которым работаем.
     * @var path
     */
    private $_pathFile = null;
    
    public function __construct($pathFile)
    {
        if(is_file($pathFile) === false) {
            throw new Arm_Config_Exception(Arm_Translate::_('Не возможно прочитать файла %s', $pathFile));
        }
        $this->_pathFile = $pathFile;
    }
    
    /**
     * Записывает значения в файл конфига, с масива $data, ключ это ключ в файле ini
     * значение, значение которое присваевыем ключу.
     * @param array $data array('info.avtor' => 'nrnwest@gmail.com')
     */
    public function write($data)
    {
        $str = file_get_contents($this->_pathFile);
        $serash = array();
        $replace = array();
        foreach ($data as $k=>$v) {
            $v = trim($v);
            $serash[] = '~('.preg_quote($k).'\s*\=\s*\"*.*\"*[$|\n]+)~imu';
            if(strpos($v, '"') === false) {
                $quote = '"';
            } else {
                $quote = null;
            }
            $replace[] = $k . ' = ' . $quote . $v . $quote . "\n";
        }
        $str = preg_replace($serash, $replace, $str);
        $fp = fopen($this->_pathFile, 'wb');
        fwrite($fp, $str);
        fclose($fp);
    }
    
    
}